package com.suixun.service.credits;

import java.util.List;

import com.suixun.entity.JfGoodsArchives;
import com.suixun.entity.ext.credits.company.CompanyGoodsPage;
import com.suixun.entity.ext.credits.company.CountGoodsInfo;
import com.suixun.entity.ext.credits.company.GoodsArchivesPage;
import com.suixun.entity.ext.credits.company.GoodsPage;
import com.suixun.entity.form.credits.BasePageForm;
import com.suixun.entity.form.credits.company.GoodsArchivesPageForm;
import com.suixun.entity.form.credits.company.GoodsPageForm;
import com.suixun.vo.credits.BaseVo;
import com.suixun.vo.credits.GoodsArchivesDetailsVo;
import com.suixun.vo.credits.GoodsArchivesVo;
import com.suixun.vo.credits.ResponseVo;

/**
 * 商品档案
 * 
 * @author yh
 * @date 2017年12月13日
 */
public interface GoodsArchivesService {

    /**
     * 添加
     * 
     * @param param
     * @param userid
     *            操作用户
     * @throws Exception
     */
    void insert(GoodsArchivesVo param, Integer userid) throws Exception;

    /**
     * 详情查询
     * 
     * @param id
     *            商品id
     * @return
     * @throws Exception
     */
    GoodsArchivesDetailsVo findDetails(Integer id) throws Exception;

    /**
     * 修改
     * 
     * @param param
     * @throws Exception
     */
    void update(GoodsArchivesVo param) throws Exception;

    /**
     * 删除
     * 
     * @param id
     */
    void delete(Integer id);

    /**
     * 商品审核
     * 
     * @param opinion
     *            审核意见
     * @param isPass
     *            是否通过,true通过
     * @param id
     *            商品id
     * @param userid
     *            审核人
     */
    void auditArchives(String opinion, Boolean isPass, Integer id, Integer userid) throws Exception;

    /**
     * 分页查询商户列表
     * 
     * @param param
     * @return
     */
    ResponseVo<GoodsArchivesPage> findPage(GoodsArchivesPageForm param);

    /**
     * 商户下的商品列表
     * 
     * @param param
     *            分页参数
     * @param companyid
     *            商户id
     * @return
     */
    ResponseVo<CompanyGoodsPage> findPageByCompany(BasePageForm param, Integer companyid);

    /**
     * 统计商品使用情况
     * 
     * @param archivesid
     *            商品id
     * @return
     */
    CountGoodsInfo countGoodsInfo(Integer archivesid);

    /**
     * 商品使用详情列表查询
     * 
     * @param param
     * @return
     */
    ResponseVo<GoodsPage> findGoodsPage(GoodsPageForm param);

    /**
     * 查询所有商品名称
     * 
     * @return
     */
    List<BaseVo> findAllName();
    /**
     * 
     * <p>Title: listGoodsArchives</p>
     * <p> 功能描述: 获取商品档案列表</p>
     * @param goodsNumbers
     * @return
     */
    List<JfGoodsArchives> listGoodsArchives(String goodsNumbers);

    /**
     * 
     * 功能描述: 置顶
     * @param goodsArchivesId
     * @param isTop是否置顶,true/false，默认为true
     */
    void top(Integer goodsArchivesId, Boolean isTop);
}
